<?php
///**
// * Description of MySQLProvider
// *
// * @author user
// */
//class DatabaseProvider implements DatabaseProviderInterface {
//
//    protected static $connection = null;
//
//    public static function affected_rows() {
//    }
//
//    /**
//     * Подключается к серверу БД.
//     * По умолчанию использует настройки из конфигурации системы
//     * @param string $host Адрес сервера
//     * @param string $user логин к серверу БД
//     * @param string $password пароль к серверу БД
//     * @param string $port порт сервера БД
//     */
//    public static function connect($host=null, $user=null, $password = null, $port = null) {
//        if (class_exists(Config)) {
//            $cfg = new Config('mysql');
//            if ($host == null) $host = $cfg->host;
//            if ($user == null) {
//                $user = $cfg->user;
//                if ($password == null) $password = $cfg->password;
//            }
//            if ($port == null) $port = $cfg->port;
//        }
//        self::$connection = mysqli_connect($host, $user, $password);
//        if (self::$connection === false) {
//            Log::fatal('MySQL error #'.mysql_errno().': '. mysqli_error());
//        }
//        return true;
//    }
//
//    /**
//     * Устанавливает базу по умолчанию, с которой будет работать система
//     * @param string $database
//     */
//    public static function database(string $database) {
//        if (self::$connection === false) log::fatal('Database server not connected.');
//        $database = mysqli_real_escape_string(self::$connection, $database);
//        $res = mysqli_query("USE $database");
//        if ($res === false) {
//            Log::fatal('Database selection failed');
//        }
//    }
//
//    public static function error() {
//        return mysqli_error();
//    }
//
//    public static function insertion_id() {
//        return mysqli_insert_id();
//    }
//    public static function query($query, $params = null) {
//        if (self::$connection === false) log::fatal('Database server not connected.');
//        //TODO: посмотреть, как сделать подстановки в строку
//        foreach($params as $key=>$param) {
//            $params[$key] = mysqli_real_escape_string(self::$connection, $param);
//        }
//    }
//    public static function initialize() {
//        self::connect();
//        self::database();
//    }
//
//    public static function select() {
//
//    }
//
//    public static function escape(string $text) {
//
//    }
//
//    public static function is_name(string $name) {
//        $res = true;
//        $parts = explode('.', $name);
//        $c = count($parts);
//        if ($c > 3)
//            // слишком много точек!
//            return false;
//        if ($c > 1) {
//            for($i=0;$i<$c;$i++) {
//                if ($i != $c-1)
//                    if (strpos($parts[$i], ' as '))
//                            // использование псевдонима разрешено только
//                            // в имени столбца!
//                            return false;
//                if (!self::is_name($part))
//                    // часть текста не является именем, следовательно и весь текст тоже
//                    return false;
//            }
//            // все части текста являются именами
//            return true;
//        }
//
//        // собственно, сама проверка имени
//        // просто имя
//        if(preg_match('%^([`"]?)[^/.\s`"\']{1,64}\1$%', $parts)) return true;
//        // имя с псевдонимом
//        if(preg_match('%^([`"]?)[^/.\s`"\']{1,64}\1\s+as\s+([`"]?)[^/.\s`"\']{1,255}\2$%', $parts)) return true;
//        return false;
//    }
//}
?>
